Arithmetic operation unit suitable for correcting lost data by general-purpose computer

ABSTRACT

When power calculation (α i ) of α as the element of a primitive polynomial on a Galois field is executed to make arithmetic operation of symbols at a time data is encoded in and decoded from a recording medium, a shift operation section of i bits and a reference table of the numbers of 2 i  are provided to calculate α i .

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates to an arithmetic operation unitcapable of multiplying elements of a Galois field at a high speed, andmore specifically, to an arithmetic operation unit suitable for in ageneral-purpose computer for correcting lost data.

[0003] 2. Description of the Related Art

[0004] In error correction processing that is executed when data isrecorded in, and reproduced from, a recording medium, check symbols E₀,E₁, E₂, . . . are encoded in the recording medium as additional codes.When the data is reproduced, symbols S₀, S₁, S₂, . . . are determined byExOring data (user symbols) with the check symbols E₀, E₁, E₂, . . .Then, the magnitude of any error is calculated by subjecting the symbolsto an arithmetic operation.

[0005] While these symbols E₀ and S₀ can be determined by thecalculation of simple exclusive OR, power calculation of α is necessaryfor symbols E₁ and S₁ or higher. Here, α is defined as an element when aprimitive polynomial G (X) on a Galois field is made to 0.

[0006] Since a recording-reproducing apparatus and the like is notprovided with an arithmetic operating section dedicated for a Galoisfield, it determines the check symbol E and the symbol S in decoding bymeans of a look-up table.

[0007] Hitherto, a table of 8 bits (256)×8 bits (256)=64k bytes is usedas the look-up table. Thus, it is possible to determine the check symbolE and the symbol S in decoding as to data each having 8 bits. However,since computers presently have an access width of a unit of 16 bits or32 bits, it is preferable to execute the arithmetic operation of thesymbols by the unit of 16 bits or 32 units.

[0008] However, the arithmetic operation of the unit of 16 bits, forexample, requires a table of 16 bits (64k bytes)×16 bits (64k bytes)=4Gbytes, the construction of which is a practical impossibility.

[0009] Further, while to the use a power expression conversion table hasalso been contemplated, this similarly requires a table on the order ofseveral hundreds of kilobytes for a unit of 16 bits or larger.

SUMMARY OF THE INVENTION

[0010] An object of the present invention, which has been made to solvethe above conventional problem, is to provide an arithmetic operationunit capable of executing power calculation using the element α of anGalois field at a high speed and correcting, for example, lost data at ahigh speed.

[0011] The present invention is characterized in an arithmetic operationunit for multiplying α^(i) when the element of G(X)=0 of a primitivepolynomial G(X) on a Galois field represented by the followingExpression (1) is represented by α, the arithmetic operation unitcomprising a shift operating section for shifting elements by i bitsbefore multiplication and a referring section for referring to a look-uptable of 2^(i) pieces of elements when the multiplier of α isrepresented by i.

G _((x)) =g _(m) x ^(m) +g _(m−1) x ^(m−2) +g _(m−2) x ^(m−2) +. . . +g_(p+1) x ^(p+1) +g _(p) x ^(p) +. . . +g ₀. . .   (1)

[0012] Further, the present invention relates to an arithmetic operationunit for calculating U·α^(i) based on an element U on the Galois fieldrepresented by the following Expression (2) when the element ofG_((x))=0 of a primitive polynomial G_((x)) on a Galois fieldrepresented by the above Expression (1) is represented by α, wherein ashift operating section for shifting the element of the U by i bits isExOred with a referring section for referring to a look-up table having2^(i) pieces of elements according to the least significant i bits ofthe U.

U=α ^(n) u _(n)+α^(n−1) u _(n−1)+. . . +α² u ₂+α¹ u ₁ +u ₀   . . . (2)

[0013] Further, when data (user symbols) is represented by D₁, D₂, . . ., D_(k), error check symbols represented by the following Expression (3)are calculated. $\begin{matrix}{{{D_{1} + D_{2} + D_{3} + \cdots + D_{k - 1} + D_{k}} = E_{0}}\quad {{{\alpha^{k}D_{1}} + {\alpha^{k - 1}D_{2}} + {\alpha^{k - 2}D_{3}} + \cdots + {\alpha^{2}D_{k - 1}} + {\alpha \quad D_{k}}} = E_{1}}\quad {{{\alpha^{{(k)}^{2}}D_{1}} + {\alpha^{{({k - 1})}^{2}}D_{2}} + {\alpha^{{({k - 2})}^{2}}D_{3}} + \cdots + {\alpha^{4}D_{k - 1}} + {\alpha^{2}D_{k}}} = E_{2}}\quad \quad {\vdots \quad \vdots}\quad \quad {{{\alpha^{{(k)}^{n - k - 1}}D_{1}} + {\alpha^{{({k - 1})}^{n - k - 1}}D_{2}} + \cdots + {\alpha^{n - k}D_{k - 1}} + {\alpha^{n - k - 1}D_{k}}} = E_{n - k - 1}}} & (3)\end{matrix}$

[0014] In addition to the above, when data (user symbols) is decoded,symbols S₀, S₁, S₂, . . . , S_(n−k−1) are obtained by calculating thefollowing Expression (4). $\begin{matrix}{{{D_{1} + D_{2} + D_{3} + \cdots + D_{k - 1} + D_{k} + E_{0}} = S_{0}}{{{\alpha^{k}D_{1}} + {\alpha^{k - 1}D_{2}} + {\alpha^{k - 2}D_{3}} + \cdots + {\alpha^{2}D_{k - 1}} + {\alpha \quad D_{k}} + E_{1}} = S_{1}}{{{\alpha^{{(k)}^{2}}D_{1}} + {\alpha^{{({k - 1})}^{2}}D_{2}} + {\alpha^{{({k - 2})}^{2}}D_{3}} + \cdots + {\alpha^{4}D_{k - 1}} + {\alpha^{2}D_{k}} + E_{2}} = S_{2}}\quad {\vdots \quad \vdots}\quad {{{\alpha^{{(k)}^{n - k - 1}}D_{1}} + {\alpha^{{({k - 1})}^{n - k - 1}}D_{2}} + \cdots + {\alpha^{n - k}D_{k - 1}} + {\alpha^{n - k - 1}D_{k}} + E_{n - k - 1}} = S_{n - k - 1}}} & (4)\end{matrix}$

[0015] Further, when the magnitude of an error is determined using thesymbols S₀, S₁, S₂, . . . , S_(n−k−1), the magnitude of the error isdetermined by providing the following inverse element reference tableand referring to the table.

[0016] a) α¹, α², . . . α^(k)

[0017] b) 1+α¹, 1+α², . . . 1+α^(k)

BRIEF DESCRIPTION OF THE DRAWINGS

[0018]FIG. 1 is a block diagram showing an example of an αmultiplication circuit.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0019] The present invention provides an arithmetic operation unitcapable of multiplying α^(i) at a high speed when the element of aprimitive polynomial G(X) on a Galois field, which has a dimension incoincidence with the access width (for example, 16 bits, 32 bits, andthe like) of a computer, is represented by α. The arithmetic operationunit of the present invention can execute multiplication even if thecomputer has a large access width. Thus, the arithmetic operation unitof the present invention correct an error in a unit of larger than 8bits, thereby overcoming the limitations of a conventional arithmeticoperation unit.

[0020] Table 1 shows a format, which is represented in a unit of oneblock, of data recorded in a magnetic disc or the like. TABLE 1 PacketDouble Double Double Double Word No Word 0 Word 1 Word 2 127 0 Byte0-3(D₁) Byte 4-7 Byte 8-11 — Byte 508-511 1 Byte 0-3(D₂) Byte 4-7 Byte8-11 — Byte 508-511 — — — — — — 63 Byte 0-3(D₆₃) Byte 4-7 Byte 8-11 —Byte 508-511 64 ECC[0] ECC[0] ECC[0] — ECC[0] 65 ECC[1] ECC[1] ECC[1] —ECC[1]

[0021] Table 1 shows Packet Nos. in a longitudinal direction, whereinNos. 0 to 63 show user blocks including data (user symbols) Packet Nos.64 and 65 include check symbols E₀ and E₁ for correcting errors. Thesecheck symbols E₀ and E₁ are codes for correcting errors.

[0022] The data from Packet Nos. 0 to 63 is arranged in a double wordunit having 32 bits (4 bytes). An arithmetic operation is executed fromPacket Nos. 0 to 63 so as to calculate the check symbol E₀ in eachdouble word unit, and a result of the calculation is stored in PacketNo. 64. Further, the check symbol E₁ is calculated in each double wordunit, and a result of the calculation is stored in Packet No. 65.

[0023] When data is recorded in a recording medium through the formatshown by Table 1, the check symbol E₀ is calculated by each double wordunit. A general expression of the calculation is shown by the followingExpression (5). In the following Expression (5), D₁, D₂, D₃, . . . ,D_(k) denote user symbols of Packet Nos. 0 to 63 in each double wordunit, and each user symbol is composed of, for example, 32 bits. Notethat in the case of Table 1, the number k of the above symbols is 63.E₀, E₁, E₂, . . . , E_(n−k−1), denote the check symbols, and the numberof the check symbols is n−k. It should be noted that Table 1 shows acase in which number of the check symbols is 2. $\begin{matrix}{{{D_{1} + D_{2} + D_{3} + \cdots + D_{k - 1} + D_{k}} = E_{0\quad}}{{{\alpha^{k}D_{1}} + {\alpha^{k - 1}D_{2}} + {\alpha^{k - 2}D_{3}} + \cdots + {\alpha^{2}D_{k - 1}} + {\alpha \quad D_{k}}} = E_{1\quad}}{{{\alpha^{{(k)}^{2}}D_{1}} + {\alpha^{{({k - 1})}^{2}}D_{2}} + {\alpha^{{({k - 2})}^{2}}D_{3}} + \cdots + {\alpha^{4}D_{k - 1}} + {\alpha^{2}D_{k}}} = E_{2}}\quad \quad {\vdots \quad \vdots}\quad \quad {{{\alpha^{{(k)}^{n - k - 1}}D_{1}} + {\alpha^{{({k - 1})}^{n - k - 1}}D_{2}} + \cdots + {\alpha^{n - k}D_{k - 1}} + {\alpha^{n - k - 1}D_{k}}} = E_{n - k - 1}}} & (5)\end{matrix}$

[0024] Next, when the data is decoded from the recording medium, thearithmetic operation of the following Expression (6) is executed. Asshown below, the magnitude of a data error is determined from symbolsS₀, S₁, S₂, . . . , S_(n−k−1) which are determined by this arithmeticoperation. $\begin{matrix}{{{D_{1} + D_{2} + D_{3} + \cdots + D_{k - 1} + D_{k} + E_{0}} = S_{0}}{{{\alpha^{k}D_{1}} + {\alpha^{k - 1}D_{2}} + {\alpha^{k - 2}D_{3}} + \cdots + {\alpha^{2}D_{k - 1}} + {\alpha \quad D_{k}} + E_{1}} = S_{1}}{{{\alpha^{{(k)}^{2}}D_{1}} + {\alpha^{{({k - 1})}^{2}}D_{2}} + {\alpha^{{({k - 2})}^{2}}D_{3}} + \cdots + {\alpha^{4}D_{k - 1}} + {\alpha^{2}D_{k}} + E_{2}} = S_{3}}\quad {\vdots \quad \vdots}\quad {{{\alpha^{{(k)}^{n - k - 1}}D_{1}} + {\alpha^{{({k - 1})}^{n - k - 1}}D_{2}} + \cdots + {\alpha^{n - k}D_{k - 1}} + {\alpha^{n - k - 1}D_{k}} + E_{n - k - 1}} = S_{n - k - 1}}} & (6)\end{matrix}$

[0025] In encoding and decoding, the arithmetic operations ofExpressions (5) and (6) can be executed with an a( multiplier having asymbol number up to −1. Note that i shows numbers 0, 1, 2, 3, . . . , k.It should be noted that the symbol “+” in the above Expression (1) orlater expressions shows an exclusive OR (ExOR).

[0026] First, while the check symbols E₀ and S₀ in Expressions (5) and(6) can simply be calculated by exclusive OR, power calculation isnecessary to calculate E₁, S₁ and later. FIG. 1 shows an example of anarithmetic operation circuit for executing this calculation. As shown inFIG. 1, D₁, D₂, D₃, . . . , D_(k) are stored in a register, and each ofthem is subjected to power calculation of α, α², . . . , α^(n−k−1) tothereby calculate E₁, E₂, . . . , E_(n−k−1) and S₁, S₂, . . . ,S_(n−k−1).

[0027] The calculation method and the arithmetic operation unit of thepresent invention for increasing the speed of the power calculation willnow be described.

[0028] The primitive polynomial GF(2) of a Galois field is representedby the following Expression (7).

G _((x)) =g _(m) x ^(m) +g _(m−1) x ^(m−2) +g _(m−2) x ^(m−2) +. . . +g_(p+1) x ^(p+1) +g _(p) x ^(p) +. . . +g ₀   . . . (7)

[0029] The primitive polynomial GF(2) of the Galois field will bedescribed using the following Expression (8) as an example so that theprinciple of the arithmetic operation unit can be explained insimplified terms.

G _((x)) =X ⁸ +X ⁴ +X ³ +X ²+1   . . . (8)

[0030] In Expressions (4) and (5) , when symbols corresponding to theuser symbols D₁, D₂, D₃, . . . , D_(k) are represented by u₇, u₆, u₅,u₄, u₃, u₂, u₁, u₀, each composed of 8 bits, U (u₇, u₆, u₅, u₄, u₃, u₂,u₁, u₀) is represented by the following Expression (9).

U=α ⁷ u ₇+α⁶ u ₆+α⁵ u ₅+α⁴ u ₄+α³ u ₃+α² u ₂+α¹ u ₁ +u ₀  . . . (9)

[0031] Further, α·U is represented by the following Expression (10).

α·U=α⁸ u ₇α⁷ u ₆+α⁶ u ₅+α⁵ u ₄+α⁴ u ₃+α³ u ₂+α² u ₁ +α ₀   . . . (10)

[0032] The α·U represented by Expression (10) is equal to what isobtained by shifting u₇, u₆, u₅, u₄, u₃, u₂, u₁ and u₀ by 1 bit as tothe elements of Expression (9) so as to obtain the following Expression(11), and by adding (ExORing) Expression (12) obtained from theprimitive polynomial of Expression (8) to Expression (11).

α⁷u₆+α⁶u₇+α⁵u₄+α⁴u₃+α²u₁+α¹u₀   . . . (11)

α⁸(=α⁴+α³+α²+1)·u ₇  . . . (12)

[0033] Accordingly, the arithmetic operation from U to α·U can beexecuted at a high speed by preparing two types of look-up tables(reference sections, Table 2) for a case in which the least significantbit u₇ of U is “1” and a case in which it is “0”, together with a shiftoperating section. TABLE 2 u7 Value of look-up table 0 0 1 α⁴ + α³ +α² + α¹

[0034] Next, α²·U is represented as shown by the following Expression(13).

α² ·U=α ⁹ u ₇+α⁸ u ₆+α⁷ u ₅+α⁶ u ₄+α⁵ u ₃+α⁴ u ₂+α³ u ₁+α² u ₀   . . .(13)

[0035] This is equal to what is obtained by shifting the elements of Uof Expression (9) by 2 bits and by adding (ExORing) the followingExpression (14) to the resultant expression.

α⁹(=α·(α⁴+α³+α²+1))·u ₇+α⁸(=α⁴+α³+α²+1)·u ₆  . . . (14)

[0036] That is, it is sufficient to prepare 4 (=2²) types of look-uptables (Table 3) according to the least significant 2-bit values of theelements of U, to shift U by 2 bits, and to subject the resultantexpression to ExORing. TABLE 3 u6,u7 Value of look-up table 00 0 01 α⁴ +α³ + α² + α¹ 10 α(α⁴ + α³ + α² + α¹) 11 α(α⁴ + α³ + α² + α¹) +α⁴ + α³ +α² + α¹

[0037] Since the shift operation is generally included in CPO and thelook-up tables can be realized by a memory of a small capacity, theshift operation is a generally applicable and high speed arithmeticoperation method.

[0038] The aforementioned procedure can be employed also in α³·U, α⁴·Uand so on in the same manner. That is, a high speed calculation of α^(i)can be executed by providing: 1) an i-bit shift section; and 2) 2^(i)types of look-up tables (referring sections)

[0039] Next, an error correction executed by the symbols S₀, S₁, S₂, . .. , S_(n−k−1) will be described.

[0040] When the data reproduced from the recording medium has no error,all of the S₀, S₁, S₂, . . . , S_(n−k−1) in Expression (6) are 0.Further, when an error arises in the user symbols, the magnitude of theerror can be calculated by the following arithmetic operation if lostdata, in which a portion where an error arises is previously known, isto be corrected. For example, when it is assumed that errors in the usersymbols arise at i-th and j-th positions from a rear side and that themagnitudes of the errors are represented by e_(i) and e_(j), therelationship between the magnitudes of the errors and the symbols S₀ andS₁ is represented by the following Expression (15).

e _(i) +e _(j) =S ₀

α^(i) e _(i)+αe _(j) =S ₁  . . . (15)

[0041] When e_(i) and e_(j) are determined from Expression (15), theyare represented by Expression (16), which can be solved as simultaneousequations with two unknowns. $\begin{matrix}{{e_{i} = \frac{\alpha^{j} \cdot S_{0} \cdot S_{1}}{\alpha^{i} + \alpha^{j}}}{e_{j} = \frac{\left( {\alpha^{j} \cdot S_{0} \cdot S_{1}} \right) \cdot \alpha^{- i}}{1 + \alpha^{j - 1}}}} & (16)\end{matrix}$

[0042] Next, since the occurrence of an error e_(j) in the check symbolE₀ results in the following expression 17, the magnitude of the errore_(i) can be solved by a linear equation.

e _(i) +e _(j) =S ₀

α^(i)e_(i)=S₁   . .. (17)

[0043] Similarly, when errors e_(i), e_(j), and e_(k) arise at threeposition of the user symbols, the magnitude of the error e_(i)(Expression (19)) can be determined by solving simultaneous equationswith three unknowns shown in Expression (18).

e _(i) +e _(j) +e _(k) =S ₀

α^(i) e _(i)+α^(j) e _(j) =S ₁

α^(2i) e _(i)+α^(2j) e _(j) =S ₂   . . . (18)

[0044] $\begin{matrix}{{e_{i} = \frac{{\alpha^{j} \cdot \alpha^{k} \cdot S_{0} \cdot \alpha^{j} \cdot S_{1} \cdot \alpha^{k} \cdot S_{1}} + S_{2}}{\left( {{- \alpha^{i}} + \alpha^{j}} \right)\left( {{- \alpha^{i}} + \alpha^{k}} \right)}}{e_{j} = \frac{\left( {{\alpha^{j}\alpha^{k}S_{0}\alpha^{j}S_{1}\alpha^{k}S_{1}} + S_{2}} \right)\alpha^{{- j} - k}}{\left( {1 - \alpha^{i - j}} \right)\left( {1 - a^{i - k}} \right)}}} & (19)\end{matrix}$

[0045] e_(j) and e_(k) can be calculated in the same way.

[0046] In the above arithmetic operation, as the degree of the primitivepolynomial increases, an amount of inverse elements to be calculated isincreased. Thus, it is advantageous to deform the primitive polynomialso that it is within a predetermined value and to refer to inverseelements by a look-up table system from a view point of speed. As to theinverse elements, it is sufficient to provide the following two types oftables (referring section):

[0047] a) α¹, α², . . . , α^(k) (k: number of user symbols), and

[0048] b) 1+α¹, 1+α², . . . , 1+α^(k) (k: number of user symbols).

[0049] As described above, according to the present invention, it ispossible to execute an arithmetic operation for error correction usingthe primitive polynomial of a Galois field.

What is claimed is:
 1. An arithmetic operation unit for multiplying _60^(i) when an element of G (X)=0 of a primitive polynomial G (X) on aGalois field) is represented by α, comprising: a shift operating sectionfor shifting elements by i bits before multiplication; and a referringsection for referring to a look-up table of 2^(i) pieces of elementswhen the multiplier of α is represented by i, wherein the element of G(X)=0 of the primitive polynomial G(X) on the Galois field isrepresented by the following expression: G _((x)) =g _(m) x ^(m) +g_(m−1) x ^(m−2) +g _(m−2) x ^(m−2) +. . . +g _(p+1) x ^(p+1) +g _(p) x^(p) +. . . +g ₀.
 2. An arithmetic operation unit for calculatingU α^(i) based on an element U on a Galois field represented by thefollowing expression: U=α ^(n) u _(n)+α^(n−1) u _(n−1)+. . . +α² u ₂+α¹u ₁ +u ₀, when an element of G_((x))=0 of a primitive polynomial G_((x))on the Galois field is represented by the following expression: G _((x))=g _(m) x ^(m) +g _(m−1) x ^(m−2) +g _(m−2) x ^(m−2) +. . . +g _(p+1) x^(p+1) +g _(p) x ^(p) +. . . +g ₀, is represented by α, wherein a shiftoperating section for shifting the element U by i bits is ExOred with areferring section for referring to a look-up table having 2^(i) piecesof elements according to the least significant i bits of U.
 3. Anarithmetic operation unit according to claim 2, wherein when data isrepresented by D₁, D₂, . . . , D_(k), error check symbols E₀, E₁, E₂, .. . , E_(n−k−1) are calculated by the following expression:D₁ + D₂ + D₃ + ⋯ + D_(k − 1) + D_(k) = E_(0  )α^(k)D₁ + α^(k − 1)D₂ + α^(k − 2)D₃ + ⋯ + α²D_(k − 1) + α  D_(k) = E₁  α^((k)²)D₁ + α^((k − 1)²)D₂ + α^((k − 2)²)D₃ + ⋯ + α⁴D_(k − 1) + α²D_(k) = E₂    ⋮  ⋮  α^((k)^(n − k − 1))D₁ + α^((k − 1)^(n − k − 1))D₂ + ⋯ + α^(n − k)D_(k − 1) + α^(n − k − 1)D_(k) = E_(n − k − 1)


4. An arithmetic operation unit according to claim 3, wherein when datais decoded, symbols S₀, S₁, S₂, . . . , S_(n−k−1) are obtained bycalculating the following expression:
 5. An arithmetic operation unitaccording to claim 4, wherein when the magnitude of an error isdetermined using the symbols S₀, S₁, S₂, . . . , S_(n−k−1), themagnitude of the error is determined by providing an inverse elementreference table of the form: a) α¹, α², . . . α^(k), and b) 1+α¹, 1+α²,. . . 1+α^(k), and by referring to the table.